﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Com.GUI;
using Com.BU;
using Com.DA;
using ColdStorage.DOL;

namespace ColdStorage.GUI
{
    /// <summary>
    /// Interaction logic for ucAirFlowCold.xaml
    /// </summary>
    public partial class ucProduct : UserControl
    {
        public int pId;
        
        public ucProduct()
        {
            InitializeComponent();
            LoadProductInfo();
            
             
        }
        public void LoadProductInfo()
        {
            //Load Nhiệt độ
            cbxImportTemp.Items.Clear();
            cbxStorageTemp.Items.Clear();
            LibraryManagerInCom.loadEnthapyList();

            cbxImportTemp.ItemsSource = LibraryManagerInCom.ProductEnthalpyList;
            cbxImportTemp.DisplayMemberPath = "temperature";
            cbxImportTemp.SelectedIndex = -1;

            cbxStorageTemp.ItemsSource = LibraryManagerInCom.ProductEnthalpyList;
            cbxStorageTemp.DisplayMemberPath = "temperature";
            cbxStorageTemp.SelectedIndex = -1;

            //Load Bao bì
            cbxWrappingType.Items.Clear();
            LibraryManagerInCom.loadWrapping();
            cbxWrappingType.ItemsSource = LibraryManagerInCom.WrappingList;
            cbxWrappingType.DisplayMemberPath = "wrapping_name";
            cbxWrappingType.SelectedIndex = -1; 

            //Load Combo Info
            // Load thông tin cho combobox hệ số quay vòng hàng
            cbxRotation.Items.Clear();
            for (int i = 5; i <= 10; i++)
            {
                cbxRotation.Items.Add(i);
            }

            //Load thông tin cho hệ số nhập hàng không đồng đều
            double dbImportUneven = 0;
            for (int j = 0; j < 8; j++)
            {
                dbImportUneven += 0.5;
                cbxImportUneven.Items.Add(dbImportUneven);
            }
        }

        

        //Tính toán tỷ lệ tương ứng giữa bao bì và khối lượng sản phẩm đưa vào
        public double Wrapping_rate()
        {
            double dbwrappingRate;
            return dbwrappingRate = Convert.ToDouble(((tb_wrapping)cbxWrappingType.SelectedItem).weight_rate);
        }


        /// <summary>
        /// Deleegate truyền nhiệt độ nhập vào của sản phẩm
        
        public delegate void GetProductInputTemp(int iProductInputTemp);
        public GetProductInputTemp myProductInputTemp;

        /// Delegate truyền nhiệt độ lưu trữ của sản phẩm
        public delegate void GetProductStorageTemp(int iProductStorageTemp);
        public GetProductStorageTemp myProducStorageTemp;


        
        // sự kiện load entanpy tương ứng khi thay đổi nhiệt độ của từng sản phẩm
        private void cbxImportTemp_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //txtWrappingOrginalTemp.Text = pId.ToString();  
            try
            {
                LibraryManagerInCom.loadProduct();
                LibraryManagerInCom.loadEnthapyList();
                tb_enthalpy enthalpy = (tb_enthalpy)cbxImportTemp.SelectedItem;  
                //tb_product product = (tb_product)cbxInsideStorage.SelectedItem;
                tb_enthalpy en = LibraryManagerInCom.ProductEnthalpyList.SingleOrDefault
                   (s => s.product_id == pId && s.temperature == enthalpy.temperature);

                txtImportEnthalpy.Text = en.enthalpy.ToString();
                
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void cbxStorageTemp_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                LibraryManagerInCom.loadProduct();
                LibraryManagerInCom.loadEnthapyList();
                tb_enthalpy enthalpy = (tb_enthalpy)cbxStorageTemp.SelectedItem;
                //tb_product product = (tb_product)cbxInsideStorage.SelectedItem;
                tb_enthalpy en = LibraryManagerInCom.ProductEnthalpyList.SingleOrDefault
                   (s => s.product_id == pId && s.temperature == enthalpy.temperature);

                txtStorageEnthalpy.Text = en.enthalpy.ToString();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Hiển thị nhiệt dung riêng của bao bì khi thay đổi từng loại bao bì
        private void cbxWrappingType_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

            txtWrappingSpecificHeat.Text = ((tb_wrapping)cbxWrappingType.SelectedItem).specific_heat.ToString();

        }

        
        private void btnApply_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Product pProduct = new Product();
                pProduct.dbProductVolumeDailyImport = Convert.ToDouble(txtVolumeDailyImport.Text);

                txtWrappingInputVolume.Text = pProduct.CalculateWrappingVolume(Wrapping_rate()).ToString();
               
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
                  
        }

        private void ucProducts_Loaded(object sender, RoutedEventArgs e)
        {
            
            //loadTemperature();
            //loadComboInfo();
            //loadWrapping();
        }

        

        

        



    }
}
